/*	Hier wird FlakBullet zum Spawnen eingefuegt
	Drag-And-Drop des getraillerten Prefab! */
var myProjectile : GameObject;
/* Zeit in Sekunden zum Nachladen der Flak */
var reloadTime : float = 1f;
/*	Drehgeschwindigkeit der Flak */
var turnSpeed : float = 5f;
/* 	Zusaetzliche Variable zum Innehalten (Zielpause) 
	vor dem Schiessen fuer mehr Realisums */
var firePauseTime : float = .25f;


//
// -------------------Hier was einfallen lassen!---------------
//
//var muzzleEffect: GameObject;

/*	Legt fest worauf gezielt wird */
var myTarget : Transform;
/*	Wo Effekte gespawned werden */
var muzzlePositions : Transform[];
private var nextFireTime : float;

/* Besonderheiten der Flak-Steuerung */
var pivot_Tilt : Transform;
var pivot_Pan : Transform;
// Hilfs-Null-Objekte im Modell
var aim_Tilt : Transform;
var aim_Pan : Transform;





function Start () {

}

function Update () {

	/* Falls ich ein Ziel habe (myTarget != null)*/
	if(myTarget)
	{
		/* aim_Pan soll sich nach dem Ziel ausrichten */
		aim_Pan.LookAt(myTarget);
		/* Aber nur in der Drehung um die Y-Achsem, also beide anderen wieder auf 0 setzen */
		aim_Pan.eulerAngles = Vector3(0, aim_Pan.eulerAngles.y, 0);
		/* Dasselbe fuer Tilt nur das man hier nichts aendern muss, weil es durch das Parenting schon richtig liegt*/
		aim_Tilt.LookAt(myTarget);
		
		/* Jetzt auf die tatsächlichen Objekte uebertragen (wie bei Artillery...)*/
		pivot_Pan.rotation = Quaternion.Lerp(pivot_Pan.rotation, aim_Pan.rotation, Time.deltaTime * turnSpeed);
		pivot_Tilt.rotation = Quaternion.Lerp(pivot_Tilt.rotation, aim_Tilt.rotation, Time.deltaTime * turnSpeed);		
		
		/* Falls wieder geschossen werden darf. Groesser falls was kurz hing. */
		if(Time.time >= nextFireTime)
		{
			/* Feuer!*/
			FireProjectile();
		}
	}
}
/* 	Diese Funktion wird automatisch ausgefuehrt sobald 
	etwas in die innere Reichweite des Colliders gelangt */
function OnTriggerStay(feind: Collider)		// Stay anstelle von Aendern, damit konstant und nicht nur bei Eintritt!
{
	if(!myTarget)
	{							// Durch Stay notwendig: Nur falls noch kein Ziel vorhanden!
	/*	Falls es sich um einen Gegner handelt*/
		if(feind.gameObject.tag == "Enemy_Air")
		{	
			/*	Zeit gewinnen, damit nicht bei direkt bei
				Feinderkennung losgefeuert wird */ 
			nextFireTime = Time.time+(reloadTime* 1.5);
			/* bis transform als Ziel setzen damit man danach
				mit myTarget.position ansprechen kann*/
			myTarget = feind.gameObject.transform;
		}
	}
}


/*	Ziel loslassen */
function OnTriggerExit(feind : Collider)
{
	if(feind.gameObject.transform == myTarget)
	{
		myTarget = null;
	}
}

/* Schuss */
function FireProjectile()
{
	/*	Sound abspielen */
	audio.Play();
	/*Zuerst die Zeit neu einstellen! Aktueller Zeitpunkt + Nachladezeit*/
	nextFireTime = Time.time + reloadTime;
	
	/* Fuer jeden Emitterpunkt Bullet und Explosion erzeugen*/
	/* Bei Random fuer drei Werte den Bereich von 0 bis 3, weil der letzte nie benutzte wird! */
	var m : int = Random.Range(0,3);
	var newMissile = Instantiate(myProjectile, muzzlePositions[m].position, muzzlePositions[m].rotation);
	newMissile.GetComponent(FlakBullet).myTarget = myTarget;
}